1. Technical Field
The present invention relates generally to a multi-user host computer system, and relates more particularly to effective terminal services support for remote clients.
2. Discussion of Background Art
Developing efficient multi-user host computer systems is a significant objective for contemporary system designers and manufacturers.
Conventional computer systems may utilize a local display device to display output directly to one user. The local display device is typically positioned close to the computer system because of restrictions imposed by various physical connections that electrically couple the display device to the output of the computer system. Some computer systems may support a second display device that has similar proximity restrictions due to the physical connections.
Remote users require the additional flexibility of choosing an appropriate viewing location and network connection to the host system. For example, in a corporate environment, a business may wish to keep all of the host computers in a “Computer Room” that is a secure central location that has both physical security and environmental management such as air conditioning and power back-up systems. However, it is necessary for users to utilize the host computer systems from their offices and from desks located outside the “computer room.”
The typical office environment today includes personal computers and increasingly more thin clients physically located at the users' locations. These personal computers and thin clients operate on a network having a centralized system for storage, file serving, file sharing, network management and various administrative services. Initially, systems centralized all of the disk storage associated with the computer system while users ran applications on their local desktops. More recently, recognizing the benefits of security, reduced cost of operation, and the general desire for centralizing control, personal computers and thin clients can operate as Remote Terminals (RTs) in Server Based Computing (SBC) solutions which run applications on a server.
The traditional approach for RTs in an SBC environment is for the host system to use some form of a server to client communication exchange such as Microsoft's Remote Display Protocol (RDP). RDP uses its own video driver on the server and uses the RDP protocol to construct the rendering information into network packets and sends them over the network to a client. The client receives rendering data and interprets the packets into corresponding Microsoft Win32 Graphics Device Interface (GDI) API calls. Support for redirecting the client keyboard and mouse commands to the server as well as managing local audio and local client drives is also included.
To enhance the communication between the host system and the clients, other systems have used the main CPU of the host system to improve the performance for RTs. This has been done both for thin clients and for traditional PCs as the remote clients. Such approaches have been effective for host systems that support only one user at a time. However, for multi-user systems, the approach of using the main CPU at the host to improve the performance for any one user has significant limitations. Computational resources such as main memory and CPU cycles that are used for optimizations for one user may reduce the ability to support the workload for additional users.
Efficiently supporting multiple users from a single host computer can reduce costs. In a typical office environment, seldom is everyone using their computer at the same time and similarly, seldom is any one user using all of the computing resources of their computer. So for example, a company with 100 offices may only need a system that supports 60 users at any one time. Even with that said, such a system could be designed to support all 100 users giving them enough computing throughput to give the appearance that they each had their own host computer.
With host computers ever increasing their performance by including multiple CPUs and CPUs that have multiple processor cores, the limitation of a single user to a single computer makes less and less economic sense. While some RTs may be locally connected over a Local Area Network (LAN) to a multi-user host system, other RTs will be connected over a Wide Area Network (WAN) where they have a lower performance network connection to the host system.
In distributed office environments with RTs at locations in different parts of the world, a centralized multi-user system may support different parts of the world during the different working hours for the respective time zones.
Server Based Computing, where the applications for users run on the server with only RT services supported at the users terminal is another way to more effectively allocate computing resources for multiple users. SBC allows the host system to dynamically allocate shared resources such as memory and CPU cycles to users that have the highest priority. SBC systems can employ techniques of Virtual Machines (VM), load balancing and other means to grant different users access to different levels of performance and resources based on a number of criteria. Different priority schemes can be used to allocate SBC resources. SBC can be used as a means to achieve higher data security, centralize the support for an organization, enhanced disaster recovery and business continuance, and to reduce data storage requirements across an organization.
However, an increased complexity may be required for a multi-user host computer to effectively manage, control and deliver rich application performance for the variety of RT devices that an organization may have. A solution is needed that allows a multi-user host system to more efficiently support numerous remote users with outstanding computing and display performance.